package javase2.day03.demo02;
/*
在java中哈希值：是一个十进制的整数，由系统随机给出（就是对象的地址值，是一个逻辑地址，是模拟出来的地址，不是数据实际储存的物理地址）
 在object类中有一个方法，可以获取对象的哈希值
 int hashCode()返回该对象的哈希码值
 hashCode方法的源码：
    public native int hashCode();
    native:代表该方法时本地操作系统的方法
 */
public class Demo02HashSet {
    public static void main(String[] args) {
        //Person类继承了Object类，所以可以使用Object类的hashCode方法
        Person p1=new Person();
        int h1=p1.hashCode();
        System.out.println(h1);//十进制：1163157884

        /*
        toString方法的源码：
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
         */
        System.out.println(p1);//十六进制：javase2.day03.demo02.Person@4554617c

        //重写hashCode
        System.out.println(p1);
        /*
        1
javase2.day03.demo02.Person@1
javase2.day03.demo02.Person@1
         */
        //哈希冲突
        System.out.println("重地".hashCode());//1179395
        System.out.println("通话".hashCode());//1179395
    }
}
